axios.defaults.baseURL='http://localhost:8081'
Vue.prototype.$http=axios


//抽取方法，取浏览器地址栏的参数
function url2Obj(){
    //取浏览器地址栏的参数，取到参数后，赋值给query对象，并去后端查询
    let url=location.href;
    let paramStr=url.split("?")[1]
    let Obj={}
    if (paramStr){
        let paramArray=paramStr.split("&");
        for (let i=0;i < paramArray.length;i++){
            let key = paramArray[i].split("=")[0];
            let value=paramArray[i].split("=")[1];
            //这里把value赋值给哪个key，key肯定不能写死
            //所以obj[key]：意思是给obj对象(这里就是query对象)动态属性赋值
            //动态赋值的话，就是可以动态query.typeId,query.minPrice,query.maxPrice等等
            Obj[key]=value;
        }
    }
    return Obj;
}







let htmls=["index.html","wymc.html","callback.html","binder.html","shoppingCar.html"];
let url=location.href
let isRun=false;


if (url.endsWith("/")){
    isRun=true;
}else{
    for (let i=0;i<htmls.length;i++){
        let html=htmls[i]
        if (url.indexOf(html)>-1) {
            isRun = true
            break;
        }
    }
}

if (!isRun){
    let token=localStorage.getItem("token")
    if (!token){
        alert("当前页面需要登录后才能操作，请登录后再操作");
        location.href="/index.html";
    }
}


//前置拦截器，发axios请求前，都会走这个拦截器
axios.interceptors.request.use(
    config => {
        // 从localStorage中获取token
        //先从localStorage中获取token。如果token有值，就将token放到请求头里面
        let token = localStorage.getItem("token");
        // 如果token有值,我们就放到请求头里面
        if (token) {
            config.headers.token = token;
        }
        return config
    },
    error => {
        return Promise.reject(error)
    })


//响应拦截器，即后置拦截器：后端响应的数据回来以后，要先经过后置拦截器，统一处理未登陆的信息
// 比如我们把前端token清除掉，那么需要token才能访问的界面就肯定访问不了了，但是需要让他跳转到登陆界面，就需要后置拦截器
axios.interceptors.response.use(function(response){
    let result = response.data;
    if(!result.success && result.msg == "noLogin"){
        alert("当前未登陆，请登录后继续操作")
        location.href="/index.html";
        localStorage.removeItem("token")
        localStorage.removeItem("loginUser")
        return "";
    }
    return response;
},function(err){
    return Promise.reject(err)
})